//一.express构建服务器
const express = require("express");
const path = require("path");
const mongoose = require("mongoose");
mongoose.connect("mongodb://127.0.0.1/news", err => {
    if (err) {
        return console.log(err)
    }
    console.log("数据库连接成功");
})

// 建立骨架
let schema = mongoose.Schema({
    title: String,
    detail: String,
    addtime: String
})

// 和集合建立关系 
let newsModel = mongoose.model("lists", schema);
let app = express();

//设置views的路径，设置ejs模板引擎  
app.set("views", './views');
app.set("view engine", 'ejs');

//设置静态资源映射
app.use(express.static(path.join(__dirname, "./static")))

// 每页显示2条数据
// 一进入页面 应该显示 0-2条  默认页码 在 1页 
// 页码 ： 当前是在哪一页 
app.get('/', async (req, res) => {

    let p = 1; // 默认页面是1;
    let queryp  = req.query.p;            // 通过 querystring 修改页面
    // console.log(queryp)
    if(typeof queryp !=="undefined"){
        p = queryp;
    }

    // console.log(p);  // 当前的页码
    // 如何通过 当前页码查询对应的数据
    let perpage = 2 ; // 每页需要显示的条数
    let queryPerpage = req.query.perpage;
    if(typeof queryPerpage !== "undefined"){
        perpage = queryPerpage;
    }
    let data =   await newsModel.find().skip((p-1)*perpage).limit(perpage);
     // 计算页码 ： 
     let  totaldata = await newsModel.find();
     let length = totaldata.length;  // 总的数据条数
     let page = Math.ceil( length/perpage);//向上取整
    //  console.log(page);
    // res.send("hello");

    res.render("index.ejs",{data,page,perpage});
})


app.get('/detail', async (req, res) => {

    let { _id } = req.query;
    console.log(_id); // 可以通过 _id 查询到具体的数据

    let [detailData] = await newsModel.find({ _id });  // 通过id查询详细信息 数组中对象结构出来
    console.log(detailData);

    res.render("detail.ejs", { detailData });

  

})




app.listen(8989)


// db.lists.insert([{
//     title:"标题五",
//     detail:"新闻一的详细信息555",
//     addtime:"2022-9-26"
// },{
// title:"标题六",
//     detail:"新闻一的详细信息666",
//     addtime:"2022-9-26"
// },{
// title:"标题七",
//     detail:"新闻一的详细信息777",
//     addtime:"2022-9-26"
// },{
// title:"标题八",
//     detail:"新闻一的详细信息888",
//     addtime:"2022-9-26"
// }])